The present disclosure generally relates to distributed services, and more particularly relates to load balancing distributed services.
A service can be generally described as a set of software functionalities/capabilities that can be utilized for different purposes. These capabilities are accessed utilizing one or more interfaces according to a specification associated with the service. Many services such as internet or web-based services often require multiple callbacks to secondary services. Each of these services and sub-services are generally distributed across multiple web servers. Therefore, balancing of incoming requests is usually performed to guarantee fairness and efficiency while serving these requests.
Conventional load balances are generally live/active server processes that act as proxy between the service requesters and servers hosting the services. The requesters send their service requests to the load balancer(s) who then dispatches the requests to the appropriate servers. These conventional load balancers have numerous drawbacks. For example, the number of load balancers is usually fewer than the number of service requesters, which results in the load balancers becoming a bottleneck in the system. The latency of a service call is at least doubled since conventional load balancers are usually situated in between requesters and the servers hosting the services. Also, since conventional load balancers are live processes they consume CPU time, memory, trash caches, etc.